package com.dangf.hzapp.util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.Map;

import android.os.AsyncTask;

/**
 * 发送网络请求
 * @author 韦海生
 * @date 2014年7月31日
 */
public class Http {

	/**
	 * 请求网络
	 * @param url	请求地址
	 * @param method	请求方法
	 * @param data	请求参数
	 * @param callback	回调接口
	 */
	public Http(final String url,final int method,final Map<String,String> data,final Callback callback){
		new AsyncTask<Void, Void, String>(){
			@Override
			protected String doInBackground(Void... params) {
				StringBuffer sb = new StringBuffer();
				
				try {
					//把 参数 组合成 get 字符串 如  id=2&name=hais&password=123
					for (Object o : data.keySet()) {
						sb.append(o).append("=").append(URLEncoder.encode(data.get(o),"UTF-8")).append("&");
					}
					
					URLConnection uc = null;
					if(method == Method.POST){
						uc= new URL(url).openConnection();	//打开URL链接

						uc.setDoOutput(true);
						BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(uc.getOutputStream(),"UTF-8"));	
						bw.write(sb.toString());
						bw.flush();
					}else{
						uc = new URL(url+"?"+sb.toString()).openConnection();
					}
					
					//获取请求结果
					BufferedReader br = new BufferedReader(new InputStreamReader(uc.getInputStream(),"UTF-8"));
					String line= null;
					StringBuffer result = new StringBuffer();
					while ((line=br.readLine())!=null) {
						result.append(line);
					}
					return result.toString();	//返回请求结果
				} catch (Exception e) {
					System.out.println("--请求出错。");
					e.printStackTrace();
				}
				
				return "";
			}
			
			@Override
			protected void onPostExecute(String result) {
				if(result!=null){	//请求成功，回调
					if(callback!=null){
						callback.onSuccess(result);
					}
				}
				super.onPostExecute(result);
			}
			
		}.execute();
		
	}
	
	
	
	
	/**
	 * 请求方式
	 * @author 韦海生
	 * @date 2014年7月31日
	 */
	public interface Method {
	        int GET = 0;
	        int POST = 1;
	}
	
	/**
	 * 回调接口
	 * @author 韦海生
	 * @date 2014年7月31日
	 */
	public static interface Callback{
		void onSuccess(String result);
	}
}
